package com.ctvit.cch.core.service;

import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ctvit.cch.core.pojo.domain.CreativeTopic;
import com.ctvit.cch.core.pojo.dto.creative.CreativeTopicApprovedDTO;
import com.ctvit.cch.core.pojo.dto.creative.CreativeTopicEditDTO;
import com.ctvit.cch.core.pojo.dto.creative.CreativeTopicMyDTO;
import com.ctvit.cch.core.pojo.dto.creative.CreativeTopicPendingDTO;
import com.ctvit.cch.core.pojo.dto.creative.CreativeTopicReSubmitDTO;
import com.ctvit.cch.core.pojo.dto.creative.CreativeTopicSubmitDTO;
import com.ctvit.cch.core.pojo.vo.creative.CreativeTopicGetVO;
import com.ctvit.cch.core.pojo.vo.creative.CreativeTopicListVO;

/**
 * 创意选题Service接口
 *
 * @author heyingcheng
 * @date 2025/10/11
 */
public interface ICreativeTopicService extends IService<CreativeTopic> {

    /**
     * 提交创意选题
     *
     * @param dto 创意选题信息
     * @return 是否提交成功
     */
    boolean submit(CreativeTopicSubmitDTO dto);

    /**
     * 创意选题重新提交
     *
     * @param dto 创意选题信息
     * @return 是否提交成功
     */
    boolean reSubmit(CreativeTopicReSubmitDTO dto);

    /**
     * 获取当前用户的创意选题列表
     *
     * @return 我的创意选题列表
     */
    List<CreativeTopicListVO> getMyList(CreativeTopicMyDTO dto);

    /**
     * 获取待审批创意选题列表
     *
     * @return 待审批列表
     */
    List<CreativeTopicListVO> getPendingList(CreativeTopicPendingDTO dto);

    /**
     * 获取已审批创意选题列表
     *
     * @return 已审批列表
     */
    List<CreativeTopicListVO> getApprovedList(CreativeTopicApprovedDTO dto);

    /**
     * 删除创意选题
     *
     * @param ids ID列表
     * @return 删除结果
     */
    boolean deleteBatchByIds(List<String> ids);

    /**
     * 撤回创意选题
     *
     * @param id 创意选题ID
     * @return 是否撤回成功
     */
    boolean withdraw(String id);

    /**
     * 获取创意选题详细信息
     *
     * @param id 创意选题ID
     * @return 创意选题详细信息
     */
    CreativeTopicGetVO get(String id);

    /**
     * 编辑创意选题
     *
     * @param dto 创意选题信息
     * @return 是否提交成功
     */
    boolean edit(CreativeTopicEditDTO dto);

}
